﻿<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title>1.0.登陆</title>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shCore.js"></script>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shBrushCSharp.js"></script>
    <script type="text/javascript" src="../../Content/highlighter/scripts/shBrushXml.js"></script>
    <link type="text/css" rel="stylesheet" href="../../Content/highlighter/styles/shCoreDefault.css"/>
    <script type="text/javascript">SyntaxHighlighter.all();</script>
</head>
<body>
    <h3>1.控制器的定义</h3>
    当安装完NFinal后,在Controllers目录下加入login类，内容为：<br/>
    <pre class="brush: csharp;">
    public class login:Controller
    {
        public void show()
        {
            View("show.aspx");
        }
        [GetHtml("login/log")]
        public void log(string name,string pwd)
        {
            var con = Models.Common.OpenConnection();
            var count = con.QueryObject("select count(*) from users where name=@name and pwd=@pwd").ToInt32();
            con.Close();
            if (count>0)
            {
                //保留用户状态，1.使用cookie加密，2.使用redis缓存。
                //NFinal的vNext版本不支持session,因为IIS在高并发访问时，IIS内存占用太大的话容易假死。
                this.Success("登陆成功",Url.DDD_IndexController_Index(), 3);
            }
            else
            {
                this.Error("登陆失败",Url.DDD_login_show(), 3);
            }
        }
        public void reg(string name,string pwd)
        {
            var con = Models.Common.OpenConnection();
            var id = con.Insert("insert into users(name,pwd) values(@name,@pwd)");
            con.Close();
            AjaxReturn(id>0);
        }
    }
    </pre>
    <p>
	 2.然后添加视图：
    </p>
    <pre class="brush: html">
        &lt;%@ Page Language="C#" AutoEventWireup="true" CodeBehind="show.aspx.cs" Inherits="WebApplication1.DDD.Views.Default.login.show" %>
        &lt;!DOCTYPE html>

        &lt;html xmlns="http://www.w3.org/1999/xhtml">
        &lt;head runat="server">
        &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                &lt;title>&lt;/title>
                &lt;script src="/Scripts/jquery-1.11.2.min.js">&lt;/script>
                &lt;script src="/Scripts/Url.js">/script>
        &lt;/head>
        &lt;body>
            &lt;form id="form1" runat="server" method="post" action="<%=Url.DDD_login_log() %>">
                &lt;div>
                    &lt;input name="name" type="text" value="123" /><br />
                    &lt;input name="pwd" type="password" value="123" /><br />
                    &lt;input type="submit" value="login" /><br />
                &lt;/div>
            &lt;/form>
        &lt;/body>
        &lt;/html>
    </pre>
    2.右键点击WebCompiler.aspx.选择在浏览器中查看.
    <p>
        生成开始<br />生成结束
    </p>
    3.找到解决方案资源管理器，展开Web文件夹下的Default文件夹。<br/>
	点击显示所有文件按钮，使其激活。则可看到login文件夹，<br/>
	其下有show.cs和show.html等文件<br/>
	如果未看到，请选择该目录并点击刷新按钮。<br/>
	<img src="../../Content/images/显示所有文件.gif" width="323" height="76"/><br/>
    右键点击login文件夹,选择包括在项目中,其中show.html的代码如下.<br/>
    <pre class="brush: csharp;">
        ﻿﻿&lt;!DOCTYPE html>
        &lt;html xmlns="http://www.w3.org/1999/xhtml">
        &lt;head>
        &lt;meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
                &lt;title></title>
                &lt;meta http-equiv="Cache-Control" content="no-cache">
                &lt;script src="/Scripts/jquery-1.11.2.min.js"></script>
        &lt;/head>
        &lt;body>
                <script>
                $.getScript("/Scripts/Url.js?_" + Math.random(), function () {
                    //生成URL所用的js函数是由NFinal自动生成
                    window.location.href = Url.DDD_login_show();
                });
	        </script>
        &lt;/body>
        &lt;/html>
    </pre>
    show.cs中的代码如下:
    <pre class="brush: csharp;" type="text/template">
        public void show()
        {
			Write("<!DOCTYPE html><html xmlns=\"http://www.w3.org/1999/xhtml\"><head runat=\"server\"><meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" /><title></title><script src=\"/Scripts/jquery-1.11.2.min.js\"></script><script src=\"/Scripts/Url.js\"></script></head><body><form id=\"form1\" runat=\"server\" method=\"post\" action=\"");
            Write(Url.DDD_login_log());
            Write("\"><div><input name=\"name\" type=\"text\" value=\"123\" /><br /><input name=\"pwd\" type=\"password\" value=\"123\" /><br /><input type=\"submit\" value=\"login\" /><br /></div></form></body></html>");
        }
    </pre>
    <p>
        show中的代码只是跳转并执行login下的show方法.
    </p>
    <p>
        4.右键点击show.html并选择在浏览器中查看,则可看到登陆效果.<br />
        <img src="../../Content/images/setup/user-login.gif"/>
    </p>
    <p>
        登陆成功时显示如下，3秒后跳转到首页<br />
        <img src="../../Content/images/setup/user-logion-success.gif"/>
    </p>
    <p>
        登陆失败时显示如下，3秒后跳转到登陆页<br />
        <img src="../../Content/images/setup/user-login-error.gif" />
    </p>
</body>
</html>